This invention relates to microprogrammable computers and more particularly to a control unit for such a computer which permits more rapid and efficient decoding and execution of operational instructions.
In a modern digital data processor, such as a computer, a sequence of instructions called a program controls the operations performed by the computer. A programmer prepared the sequence of instructions which tells the machine what to do, step by step, in solving a particular problem.
The procedure for programming a problem generally includes two separate steps. In the planning step, the programmer determines the sequence of operations required to solve a particular problem. In the coding step, these operations are written in a special format which details the precise operations the computer is to perform.
The programmer may write the program in terms of what are called "macroinstructions," as an example, "determination of square root" would constitute a macroinstruction. Each macroinstruction, when written in machine language, is made up of a set of machine instructions. Examples of such machine instructions would be "add" or "subtract." A machine instruction, in turn, is made up of microoperations. A microoperation is performable in response to a single pulse. An example of a microoperation would be the transfer of information from one storage register to another.
A machine instruction may be considered a "program" of microoperations or a microprogram. Such a microprogram, however, is a portion of the hardware of the processor in a standard processor. Thus, whereas the programmer may be able to devise many different programs for the solution of the same problem in different ways, the standard hardware of a standard processor will always carry out the microsteps to perform a given operation in the same way.
A machine is strictly microcontrolled, if and only if the decoding network is combinational. In a phased microcontrolled machine the decoding network consists of a combinational network preceded by delays, which provide different but fixed delays for the signals emanating from the control store.
More recently, processors have been constructed using read only memories which contain binary representations of each microoperation. Each word of the memory will generally represent a set of one or more microoperations all of which may be performed at the same time. The address of each word within the memory is defined by a particular machine instruction and by a location within the microprogram of that instruction.
Some recent machines include a programmable memory in the place of the read only memory so that the microoperations of the machine may be altered by the programmer in order to change the basic operation of the computer system. This is often done, for example, to permit a given computer to emulate many other computers by making the microsteps within the computer conform to the microsteps which are stored in the hardware or read only memory of the emulated machine.
One of the most severe limitations of the current microprogrammable processors is the relatively long period of time required to decode machine language instructions within the read only memory. Thus, for example, it is common to require 15 to 60 microinstructions in order to interpret and decode one machine language instruction, which requires approximately 3 to 12 microseconds when the clock rate is 5 MHz. Since such decoding is necessary prior to the outputting of command signals to control computer operations, microprogrammable computers have historically provided flexibility and cost economics only at the expense of rapid computation.